package com.wudl.core

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

import scala.collection.mutable.ArrayBuffer

/**
 *
 * @author wudl
 * @create 2021/6/17 11:28
 * @description
 */
object SparkRddMake {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[1]").setAppName("sparkRddMake")
    val sc = new SparkContext(sparkConf)
    //    val dataRdd = sc.makeRDD(List(1, 2, 3, 4, 5, 6), 6)
    //    val valueRdd = sc.textFile("inputs", 2)
    //    valueRdd.collect().foreach(println)
    //    val dataRdd = sc.makeRDD(List(1,2,3,4,5))
    //    val mapRdd = dataRdd.map(
    //      num => num* 2
    //    )
    //    mapRdd.foreach(println)

    // ***********************************
    val dataRdd = sc.makeRDD(List(1, 8, 3, 4, 5))

//    val resultRdd: RDD[Int] = dataRdd.mapPartitions(
//      tmp => {
//        var arr: ArrayBuffer[Int] = new ArrayBuffer[Int]()
//        tmp.foreach(datas => {
//          arr.+=(datas)
//          println(datas.toString)
//
//        }
//        )
//        arr.iterator
//      }
//    )
    println("**************************")
//    resultRdd.foreach(println)

   // 将数据根据指定的规则进行分组, 分区默认不变，但是数据会被打乱重新组合，我们将这样的操作称之为shuffle

    val resultRDD = dataRdd.groupBy(_%2)

      resultRDD.foreach(println)



    sc.stop()


  }

}
